﻿using System;
/*
 
结构体的构造语义如下：
    隐含存在一个无法重载的无参数构造方法，将字段按位置零。
    定义结构体的构造方法，必须显式指定每个字段。
    不能在结构体内初始化字段。

 */
namespace _047_结构体构造语义
{
    public struct ErrorPoint
    {
        //int x = 1; // 不合法：不能初始化字段
        int y;
        //public ErrorPoint() { } // 不合法：不能由无参数的构造方法
        //public ErrorPoint(int x) { this.x = x; } // 不合法：必须指定y值

        //如果把struct替换成class，上面的写法都合法
    }

    public struct Point
    {
        int x, y;
        public Point(int x,int y)
        {
            this.x = x;
            this.y = y;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Point p1 = new Point(); // p1.x和p1.y都是0
            Point p2 = new Point(1, 1); // p2.x和p2.y都是1
        }
    }
}
